﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace YemekteyizLib.Bs
{
    public  class RestoranProvider
    {
        /// <summary>
        /// Restorant listesinden bir restorant seçtiğinde kullanılacak.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static Restoran GetByID(int id)
        {
            SqlCommand cmd = new SqlCommand("select * from restoranlar where restoranID = @ID");
            cmd.Parameters.AddWithValue("@ID", id);
            cmd.Connection = Tools.GetConnection();
            Restoran r = new Restoran();
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                rdr.Read();
                r.ID = rdr.GetInt32(0);
                r.Adi = rdr.GetString(1);
                r.Adresi = rdr.GetString(2);
                r.BulunduguIlce = new Ilce();
                r.BulunduguIlce.ID = rdr.GetInt32(3);
                r.Telefon = rdr.GetString(4);
                r.KapatmaSaati = rdr.GetInt32(5);
                r.KapatmaDakikasi = rdr.GetInt32(6);
                r.Email = rdr.GetString(7);
            }
            Tools.CloseConnection();
            return r;
        }

        /// <summary>
        /// İlçe seçildikten sonra kullanılacak.
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static List<Restoran> GetByIlce(Ilce i)
        {
            SqlCommand cmd = new SqlCommand("select * from Restoranlar where IlceID = @ID");
            cmd.Parameters.AddWithValue("@ID", i.ID);
            cmd.Connection = Tools.GetConnection();
            List<Restoran> donecek = new List<Restoran>();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                Restoran r = new Restoran();
                r.ID = rdr.GetInt32(0);
                r.Adi = rdr.GetString(1);
                r.Adresi = rdr.GetString(2);
                r.BulunduguIlce = i;
                r.Telefon = rdr.GetString(4);
                r.KapatmaSaati = rdr.GetInt32(5);
                r.KapatmaDakikasi = rdr.GetInt32(6);
                r.Email = rdr.GetString(7);
                donecek.Add(r);
            }
            Tools.CloseConnection();
            return donecek;
        }

        /// <summary>
        /// Hiçbir ilçe seçilmediğinde kullanılacak.
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static List<Restoran> GetByIl(Il i)
        {
            SqlCommand cmd = new SqlCommand("select * from Restoranlar r join Ilceler ic on ic.IlceID = r.IlceID join Iller i on i.IlID = ic.IlID  where i.IlID = @ID");
            cmd.Parameters.AddWithValue("@ID", i.ID);
            cmd.Connection = Tools.GetConnection();
            List<Restoran> donecek = new List<Restoran>();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                Restoran r = new Restoran();
                r.ID = rdr.GetInt32(0);
                r.Adi = rdr.GetString(1);
                r.Adresi = rdr.GetString(2);
                Ilce ic = new Ilce();
                ic.ID = rdr.GetInt32(3);
                r.BulunduguIlce = ic;
                r.Telefon = rdr.GetString(4);
                r.KapatmaSaati = rdr.GetInt32(5);
                r.KapatmaDakikasi = rdr.GetInt32(6);
                r.Email = rdr.GetString(7);
                donecek.Add(r);
            }
            Tools.CloseConnection();
            return donecek;
        }


        public static void Kaydet(Restoran r)
        {
            SqlCommand cmd = new SqlCommand("update Restoranlar set Adi=@p1,Adresi=@p2,IlceID=@p3,Telefon=@p4,KapatmaSaati=@p5,KapatmaDakikasi=@p6,Email=p7 where RestoranID=@ID");

            cmd.Parameters.AddWithValue("@p1", r.Adi);

            cmd.Parameters.AddWithValue("@p2", r.Adresi);
            cmd.Parameters.AddWithValue("@p3", r.BulunduguIlce);
            cmd.Parameters.AddWithValue("@p4", r.Telefon);
            cmd.Parameters.AddWithValue("@p5", r.KapatmaSaati);
            cmd.Parameters.AddWithValue("@p6", r.KapatmaDakikasi);
            cmd.Parameters.AddWithValue("@p7", r.Email);
            cmd.Parameters.AddWithValue("@ID", r.ID);

            cmd.Connection = Tools.GetConnection();
            cmd.ExecuteNonQuery();
            Tools.CloseConnection();


        }
    }
}
